// 定义store 仓库

// 01: 安装redux:  npm i redix

// 02: 使用redux 中的一个方法 createStore 方法
import { legacy_createStore as createStore, combineReducers } from 'redux';

// 03: 定义默认的state 得数据
const defaultstate = {
    count: 0,
    money: 100
}

// 03:创建reducer纯函数, 在该函数中修改state 数据
// 参数1: 就是全局共享的数据
// 参数2: 就是接收的页面派发过来的action 任务, 用来修改state
// action 任务: 就是一个对象结构, 该对象中一般有 2个属性, type 和 payload
// type 为一个标记, 该标记用来区分如果去操作state,payload 表示参数,
// 注意: reducer 函数必须有返回值用来修改state
const reducer = (state = defaultstate, actions) => {
    if (actions.type == '+') {
        // 该修改state数据的方式是替换,会导致原数据的丢失
        return {
            // ...state, // 保留原数据 可以去掉
            count: state.count + actions.payload
        }
    }
    // 如果没有匹配的标记type属性, 需要返回原state
    return state
}

const reducer1 = (state = defaultstate, actions) => {

    if (actions.type == 'add') {
        // 该修改state数据的方式是替换,会导致原数据的丢失
        return {
            //...state, // 保留原数据 可以去掉
            money: state.money + 1
        }
    }

    // 如果没有匹配的标记type属性, 需要返回原state
    return state
}
// 04: 使用createStore 方法创建store 仓库
const store = createStore(combineReducers({ reducer, reducer1 }), window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());

// 05: 导出store
export default store



